1. Field of the Invention
The present invention relates to the field of printing and in particular, to systems and methods to optimize printer throughput utilizing a multi-core environment.
2. Description of Related Art
Document processing software allows users to view, edit, process, and store documents conveniently. Pages in a document may be displayed on screen exactly as they would appear in print. However, before the document can be printed, pages in the document are often described in a page description language (“PDL”). A PDL description of a document provides a high-level description of each page in a document. This PDL description is often translated to a series of lower-level printer-specific commands when the document is being printed. As used in this application PDLs may include Personalized Print Markup Language (“PPML”), PostScript™, Adobe PDF™, HP PCL™, Microsoft XPS™, and variants thereof as well as any other languages used to describe pages in a document. The Personal Printer Markup Language (“PPML”) specification permits printer languages to identify, store, and re-use objects such as text and graphic elements.
The PDL description is parsed and typically converted to an intermediate form termed a display list, which can hold objects, including commands (also called display list primitives). Display list commands define data objects and their contexts within a document or a page within the document to be printed. The display list is parsed and then converted into a final form, which can be used to place marks on a print medium. The process of translation from a display list representation of a document to a lower-level description that may be used to place marks on a print medium is termed rasterization. Rasterization may be performed on a computer, printer, or distributed between the computer and printer.
Rasterization typically renders pages one at a time by determining pixels affected by a display list command and modifying those pixels appropriately. When a page is ready to be rasterized, it may be operated upon by a rasterizer. However, in some instances, the time taken to generate the entire display list for a page may be significant. During this period a processor may be idle. In addition, in modern multi-core processors (which can contain several processor “cores” in a single chip or package), one or more cores may be idle while waiting for the generation of the entire display list for a page.
Idling of processors is a waste of computational resources and suggests either a poor design (excessive capacity) or poor utilization (inability to use existing resources). In addition, idle cycles on processors can affect performance and rendering speed. Thus, better utilization of available computing resources permits greater functionality and/or better performance at a lower price point.
Therefore, there is a need for systems and method to optimally use available computing resources.